/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lishuo
 * Date: 2023-02-26
 * Time: 11:48
 */
class Student {
    // 私有属性
    private String name = "bit";
    // 公有属性
    public int age = 18;
    // 不带参数的构造方法
    public Student(){
        System.out.println("Student()");
    }

    private Student(String name,int age) {
        this.name = name;
        this.age = age;
        System.out.println("Student(String name,int age)");
    }

    private void eat() {
        System.out.println("i am eating");
    }

    public void sleep() {
        System.out.println("i am pig");
    }

    private void function(String str) {
        System.out.println(str);
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public class Test {

    // 一个类只能拥有一个class对象
    public static void main(String[] args) throws ClassNotFoundException {
        // 获得Class对象的三种方式
        // 第一种：使用 Class.forName("类的全路径名"); 静态方法。（已明确类的全路径名。）
        Class<?> c1 = Class.forName("Student");//需要抛异常

        // 第二种：使用 .class 方法。（仅适合在编译前就已经明确要操作的 Class）
        Class<?> c2 = Student.class;

        // 第三种：使用类对象的 getClass() 方法
        Student student = new Student();
        Class<?> c3 = student.getClass();

        System.out.println(c1==c2);
        System.out.println(c1==c3);
        System.out.println(c2==c3);

    }

}